package com.gosophia.commons;

//TODO: 格式不全，与中投保同步

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期转化类
 * 
 * @author zhaoyanfang
 * 
 */
public class DateTranslate {
	final static SimpleDateFormat SIMPLE = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	final static SimpleDateFormat SIMPLEFORMAT = new SimpleDateFormat("yyyy-MM-dd");

	/**
	 * 将一个String类型（格式：yyyy-MM-dd HH:mm:ss）装换为一个Date型
	 * @param sdate
	 * @return
	 */
	public static Date stringToDate(String sdate) {

		Date date = null;
		try {
			date = SIMPLE.parse(sdate);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/**
	 * 将日期型转换成字符型（格式：yyyy-MM-dd HH:mm:ss）
	 * @param dt
	 * @return
	 */
	public static String simpleDateTimeToString(Date dt, String format) {
		if (dt == null) {
			return null;
		}
		if(format.endsWith("yyyy-MM-dd hh24:mi:ss")) {
			format = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat myDateFormat = new SimpleDateFormat(format);
		String date = myDateFormat.format(dt);
		return date;
	}
	
	/**
	 * 将日期型转换成字符型（格式：yyyy-MM-dd HH:mm:ss）
	 * @param dt
	 * @return
	 */
	public static Date simpleStringToDateTime(String dt, String format) {
		if (dt == null) {
			return null;
		}
		if(format.endsWith("yyyy-MM-dd hh24:mi:ss")) {
			format = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat myDateFormat = new SimpleDateFormat(format);
		Date date = null;
		try {
			date = myDateFormat.parse(dt);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 将日期型转换成字符型（格式：yyyy-MM-dd HH:mm:ss）
	 * @param dt
	 * @return
	 */
	public static String simpleDateTimeToString(Date dt) {
		if (dt == null) {
			return null;
		}
		String date = SIMPLE.format(dt);
		return date;
	}

	
	/**
	 * 将日期格式转换成（yyyy-mm-dd）
	 */
	public static Date toSimpleDateYMD(Date dt) {
        if (dt == null) {
            return null;
        }
        String st = SIMPLEFORMAT.format(dt);
        try {
            dt = SIMPLEFORMAT.parse(st);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dt;
    }
	
	/**
     * 将日期格式转换成（yyyy-MM-dd HH:mm:ss ）
     */
    public static Date toSimpleDateYMDHMS(Date dt) {
        if (dt == null) {
            return null;
        }
        String st = SIMPLE.format(dt);
        try {
            dt = SIMPLE.parse(st);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dt;
    }
	/**
	 * 将Date类型转化格式为"yyyy-MM-dd"的字符串
	 * @param dt
	 * @return
	 */
	public static String simpleDateToString(Date dt) {
		if (dt == null) {
			return null;
		}
		String st = SIMPLEFORMAT.format(dt);
		return st;
	}

	/**
	 * 将"yyyy-MM-dd"格式字符串转化为Date类型
	 * @param sdt
	 * @return
	 */
	public static Date simpleStringToDate(String sdt) {
		Date date = null;
		try {
			date = SIMPLEFORMAT.parse(sdt);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/**
	 * 返回两个时间相隔的天数（endDate - startDate）
	 * @param startDate
	 * @param endDate
	 * @return
	 * @author lifh
	 */
	public static int getDistDates(Date startDate,Date endDate){
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTime(startDate);
	    long startTime = calendar.getTimeInMillis();
	    calendar.setTime(endDate);
	    long endTime = calendar.getTimeInMillis();
	    int totalDays = (int) (Math.abs(endTime-startTime)/(1000*60*60*24));
	    return totalDays;
	}
}
